perm filename UUO.UPD[S,DOC]99 blob
sn#478330 filedate 1979-09-29 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00010 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00004 00002 This file contains corrections, additions and updates to the UUO Manual,
C00005 00003 [ALL ENTRIES BEFORE THIS HAVE BEEN INCLUDED IN UUO MANUAL, THIRD EDITION.]
C00012 00004 187. The following new TTYSETs are defined:
C00048 00005 249. TTYSET operation number 41 is "hang up modem", only works on DCA
C00072 00006 295. The DPYPOS and LEYPOS UUOs now use (essentially) all 18 bits of
C00079 00007 310. Device VRN is the Varian Plotter, driven from P2. It can be
C00083 00008 315. The FILUSR UUO [CALLI 400046] can be used to find out what job(s)
C00086 00009 319. The following UUOs are added for DM NOEDIT mode (see NOEDIT/D
C00091 00010 320. The sign bit of the XGP right margin word (in MTAPEs 2 and 3,
C00096 ENDMK
C⊗;
This file contains corrections, additions and updates to the UUO Manual,
including new UUOs that have been added since the manual went to press.
[ALL ENTRIES BEFORE THIS HAVE BEEN INCLUDED IN UUO MANUAL, THIRD EDITION.]
177. TTYSET function 17 (get responsible TTY) returns -1 if no TTY
is responsible. Also, if you look in the system (eg, via PEEK
or SETPR2) to find the terminal responsible for some TTY line,
a value of 12 (TTY12) for the responsible terminal really means
that no one is responsible for the particular TTY line.
178. [Obsolete. See item 201.]
A beep to a (responsible) non-ARPA PTY is a no-op.
179. Somehow this didn't make it into the third edition:
The SUPSOM bit (0,,1000) in the fourth word of a SETACT UUO
activation table suppresses the CONTROL and META bits on all
characters whose individual character bits are not on in the
activation table. This means that the activation table's
character bits are used for two purposes--in special activation
mode and in SUPSOM mode--but these two modes are not expected
to be in use at the same time. If SUPEOL is on, it takes
precedence over SUPSOM.
180. Error code 7 (GMM) to an IMP MTAPE means Gender MisMatch; ie, an
attempt to connect two like-gendered sockets together. Odd sockets
may only be connected to even sockets and vice versa.
181. XGP intercharacter spacing ('177 '1 '50 ICS) is now implemented.
It takes one 7-bit byte as the new value for intercharacter
spacing. The intercharacter spacing is set to zero when you INIT
the XGP, but is not reset to zero at any other time. The
intercharacter spacing value is the (positive) number of columns by
which the X-position is incremented after each normal text
character is printed (after the X-adjustment for character width).
It is possible that use of this feature may generate lines that are
too complex for XGPSER to print (usual warning).
182. The system now allows up to =128 fonts (font numbers from 0 to =127).
183. XGP MTAPE 7 is just like XGP MTAPE 1 (compiles a font) except that
a four-word table follows the font identification number to specify
which characters are to be loaded (compiled). In this four-word
table, each word contains the flag bits for =32 characters: the
first word contains the bits for characters '000 thru '037, the
next word for '040 thru '077, then '100 thru '137, and finally '140
thru '177. Within a given word, the flag bits occur from right to
left in order of increasing character code, with the high-order
four bits of each word ignored (those four bits should be zero).
Thus bit 35 (0,,1) of the first word is the flag bit for character
'000, bit 34 (0,,2) is the bit for '001, etc. If the flag bit for
a character is on, that character will be loaded when the given
font is compiled; otherwise the character will not be loaded and
any attempt to print that character in that font will be ignored.
This MTAPE accepts only the uncompiled (.FNT) font format. If the
given file holds a compiled-format (.CFT) font, then an error will
occur (illegal format file). If no filename extension is given and
no file has the given exact name, then only the additional
extension .FNT will be looked for -- no .CFT file will be used.
184. XGPUUO opcode 4 from the system to the Font Compiler is just like
opcode 2 except that words 5 through 10 (octal) of the data block
contain the four words from the user specifying which characters
are to be compiled, in the same format as in XGP MTAPE 7.
185. XGP ESCAPE 5 selects the font specified by the following 7-bit byte
(e.g., '177 '5 FONT).
186. The HNGTRP bit (bit 28--0,,200) in XGP I/O status word suppresses
halt with error message on hung XGP (and probably hung P2). UUOs
take error return instead when this bit is on (just like LPT).
187. The following new TTYSETs are defined:
23 get GAG bit
24 set GAG bit
25 get NO-CONVERT bit
26 set NO-CONVERT bit
These bits correspond to the commands TTY [NO] GAG and TTY [NO] CONVERT
except that TTY CONVERT clears the no-convert bit. The GAG bit prevents
anyone from linking to the terminal via the TALK command, and also
prevents TTYMES to the terminal (except TTYMES to SIXBIT /TTY/ from the
attached job). GAG does not prevent beeps. The no-convert bit
applies only to physical terminals (not PTYs) which are not displays;
when the bit is off (the default), the characters altmode, right brace,
tilde, and not-equal are converted on input and output as they are for
ARPAnet PTYs. This means also that when the bit is off, only octal 33
is interpreted as altmode on input. If you have an old model 33 you
may need to say TTY NO CONVERT or set this bit. TTYSETs 23 and 25
return the value 0 or 1 (all but bit 35 returned zero). 24 and 26
use bit 35 of the TTYSET command word to set the bit.
188. TTY image modes 10 and 11. These modes permit input and output of
all characters including null and ↑C, with no conversion, filling,
etc. If either of these modes is set in TTY IOS either by INIT or
by TTYSET (or SETSTS), then filling and code conversion are disabled
for any form of I/O, TTYUUO as well as buffered INPUT or OUTPUT. In
addition, beeps to the terminal are disabled. Further effects for
output: OUTCHR accepts 8-bit characters and does not generate
parity. (OUTSTR and other inherently 7-bit output methods still
generate parity.) For the OUT and OUTPUT UUOs, parity is not
generated, and nulls will be output, if and only if the byte size
of the byte pointer in the users buffer header is 9 or more. (The
user must set this after INITing the channel.) The number of
characters typed will be exactly the number deposited into the
buffer by the user, so padding nulls in the last word in use in the
buffer will not be sent. Further effects for input: The eighth
(parity) bit is made available to the user, and nulls are allowed.
The 400 bit will be on in all characters input, to allow nulls.
(A zero character is not allowed internally in the monitor.) This
bit may be ignored, except that it distinguishes a typed null from
a padding null in buffered input. (The user's buffer header must
specify a byte size of at least 9, of course, to see that bit.)
INCHRW and INCHRS will return 9-bit characters. The line-at-a-time
TTYUUOs (and RDLINE) should not be used while the TTY is in image
mode, since line activators are not well-defined. Modes 10 and 11
are exactly the same on output; the difference on input has to do
with when the program is awakened on an IN or INPUT UUO: in mode
10, the UUO will return when any number of characters (greater than
zero) are waiting; in mode 11, the program is not awakened until
the TTY input buffer is half full. The TTYSKP UUO can be used to
find out if an INPUT will return immediately. Modes 10 and 11 are
undefined for local (DD and III) display terminals; in particular,
they are not a good way to try to trap CALLs. However, they do work
on Datamedias; while a DM is in image mode, the DM output queues are
disabled, and output will come only from the TTY output buffer.
Also, the line editor is disabled for input, as are escape commands.
(NUL is passed to programs in this mode.)
189. The LOGIN UUO is legal only if JACCT is set, not whenever JLOG is off.
190. New UFD format:
words 0-3: same as before
4: file length in words
5: BYTE (15)date written in system date format (21)time written
in 15ths of a second after midnight *
6: last referenced date **
7: last dumped date **
10-11: not used (yet)
12: SATID (may be changed)
13-16: 4 words of special file info (as in disk MTAPEs 10 and 11)
17: file offset (1 less than first logical record # in the file)
* The low order bit of this word is 0 for PST and 1 for PDT.
This date is always in Pacific Standard Time.
** These two words have the same format as they do in long LOOKUP blocks.
This format does not apply to the MFD.
191. New disk MTAPE 26:
MTAPE CHN,[ 'GODMOD'
26
'filename'
'extension',,ERROR CODE
UNUSED (must be zero)
'ppn'
ADDRESS OF 20 WORD BLOCK FOR UFD ENTRY TO BE STORED IN
]
ERROR RETURN
SUCCESS RETURN
Does a LOOKUP using the given information, but instead of storing what's
normally put in a lookup block, it stores the 20 word ufd entry starting
at the address specified in the MTAPE block. If the file being looked up
is a UFD, the system generates a "ufd" entry and stores that rather than
the actual entry from the MFD. If the LOOKUP fails, then nothing is
stored except the ERROR CODE, which should be interpreted the same as the
the ERROR CODE for a normal LOOKUP.
192. Include NEWPRV.JBR[S,DOC].
193. TTYSET 27 and TTYSET 30 are get and set, respectively, for the
"no-peek" bit. This bit is totally unused by the monitor, but is
set by LOGIN and other programs that read passwords during the
time a password is in the TTY input buffer. The PK program reads
this bit and doesn't display the TTY's input buffer when it's on.
194. New disk MTAPE 27:
MTAPE CHN,[ SIXBIT /GODMOD/
27
UFD'S PROTECTION WORD STORED HERE
UFD'S FILE INFO WORD 3 STORED HERE (DEFAULT PRO/GRP ACCESS)
]
ERROR RETURN, NO LOOKUP DONE
SUCCESS RETURN
If a LOOKUP has been done on CHN, then the MTAPE returns the protection word
and the default protection/group access word of the UFD of the file looked up.
If the file itself is a UFD then the "UFD" protection word is that of the MFD
but the "UFD" default protection/group access word is that of the UFD (i.e.,
the file looked up) itself.
195. Update page 164 describing the 4 words of special info stored for a UFD on
the disk:
word 3: bits 10:35 are the group access bits for the UFD.
196. "JOBNM1" at top of on p. 253 (Job Data Area) should be "JOBTM1".
197. New low core pointer, location 261 points to the cell DAYLIT which
is non-zero for daylight savings time.
198. ENTER no longer lets you set the creation date of a file. It is set
to the current date when the ENTER creates the file, and is copied
from the old version when the ENTER supercedes a file.
199. New UUO: STDTIM AC, (CALLI 400055) is like ACCTIM but returns Pacific
Standard Time.
200. New XGP MTAPEs.
MTAPE <chan>,ADR
ADR: 10
<number of scan lines output is returned here>
MTAPE 10 returns the number of scan lines queued for output to the
XGP since you inited the XGP.
MTAPE <chan>,ADR
ADR: 11
<number of real formfeeds already output is returned here>
MTAPE 11 returns the number of formfeeds (014's) that you have output
that have already been sent to the XGP (not just queued -- however,
the actual paper cut occurs about 25 seconds after the formfeed
itself has been sent).
201. PTYs are initialized with the GAG bit on. The GAG bit is checked
when the monitor decides whether or not to permit a TTYMES or BEEP
to a PTY. IMPBIT is no longer checked in this regard. When a BEEP
to a PTY is GAGged, the BEEP is given instead to the job owning the
PTY. BEEPs are never GAGged on non-PTYs.
202. The GETPPN UUO, when given by a job with JACCT set, ignores jobs
which don't have JLOG set in deciding whether or not to take the
skip return.
203. When a spacewar module is started, AC 7 contains the protection of
the upper segment.
204. The SWAP UUO, when starting a new job, will set the alias of the
new job equal to that of the old job iff the PPN specified for the
new job (word 5 of the argument block) is zero. (Otherwise the
new job is started with no alias, as before.)
205. Typo on p. 84. Sample UUO call "SHOWIT AC" should be "SHOWIT AC,".
206. XGP appendix should explain difference between mode 0 and mode 13.
(Which I think is that in mode 13 the byte size is 36.)
207. TTYSET function 31 clears the line editor if the terminal is a display.
208. XGP ESCAPE 6 is "select font and align at top". '177 '6 <font number>.
A relative baseline adjust is done to make the newly selected font
line up at the top with the top of the previously selected font,
unless no chars have been output on the current text line, in which
case XGP ESCAPE 6 is the same as XGP ESCAPE 5 (font select).
209. Any file LOOKUP error from a SWAP UUO trying to start up a new job
stops the new job, not the old one.
210. The INTIMS interrupt is given to the logger when an "interesting" RFC
(ie, 1≤socket≤777 and socket is odd) comes in. No network channels
need be opened (in fact, the logger doesn't have any channels open).
A job becomes the logger by setting the "LOGGER" cell in the system.
211. The LGONCE bit (4000,,0) in the IMPSTB word says that the logger has
already looked at this socket. The system doesn't use this bit, but
the user mode logger sets and uses it to avoid trying to service the
same RFC twice.
212. Following a conversation with Postel, interesting sockets now stop at
377 instead of 777; sockets 400 and up are "private sockets".
213. Sockets may be gensymmed by using -1 in the connect MTAPE block instead
of a socket number. A gensymmed socket is picked such that the next 5
sockets are free.
214. Spacewar process timeout causes the job to get SPACEWAR LOSSAGE and to
to be stopped.
215. Note that since the PTOCNT UUO gives you the number of characters in
the output buffer, and since characters are transmitted on DMs from
the DM queues instead of from the output buffer, you cannot use the
PTOCNT UUO on a DM to decide whether or not the next PTRDS UUO will
wait. See item 221 below for the solution to this problem on DMs
(also useful on other PTYs).
216. IMP MTAPE 21 will return a gensymmed receive socket. Gensymmed sockets
are picked so the next 7 sockets (ie, a cluster of 8. sockets) are free
as well as the gensym one. The socket is returned in the second word
of the MTAPE block.
217. Note that only receive sockets may be gensymmed by IMP MTAPE 1. An
attempt to gensym a send socket will return the GMM error. There
shouldn't be any reason why somebody would want to gensym a send
socket, of course, nothing prevents doing an MTAPE 21 and adding 1 to
the returned value.
218. SIXSER sends a 0 and a -1 in the date message to verify all bits.
219. New TTYSETs:
32 gets the temporary gag bit
33 sets the temporary gag bit to given value in low-order
bit of the function word. The temporary gag bit is
automatically cleared by the RESET UUO.
34 makes the tty an IMP tty (sets IMPBIT) provided it is a pty.
35 makes the tty a DM (sets DMLIN) provided it isn't already a display.
On setting IMPBIT and DMLIN:
It is now impossible to set either of these two line characteristics
bits with the SETLIN or PTSETL UUOs or TTYSET function 1. Only the
two new TTYSET functions (34 and 35), which explicitly set these
respective bits, are legal. So if you have any programs that try to
set either of these bits, you should convert to using the new TTYSET
functions. There is no indication of failure by SETLIN, etc., to set
these bits other than the fact that the bits don't get set.
220. PTWR1S/W uuos can no longer send ESCAPE/BREAK/CLEAR characters. An
attempt to do such gets illegal uuo error message. TTYSET function 4
should be used to send escape commands, and TTYSET function 31 can be
used to clear the line editor.
221. PTRDS UUO will never wait (not even for the first char) if the 40,,0
bit is on in the byte pointer/address word that points to the place
for the returned string.
222. The functions of the LOGGER are now in the monitor. The exec mode
logger is disabled from firing up servers if MAINTM is set. The
job name = [LOGR] mechanism is gone. The INTIMS mechanism still
exists for the special user mode logger, which is normally not run.
223. IMP MTAPE 13 has been recycled to mean "curse IMP". It brings the
NCP down and sets a flag to keep it down until an IMP MTAPE 12 is
done. MTAPE 13 requires an argument of SIXBIT/KILIMP/. It is an
Illegal UUO if it is not given this argument.
224. Using ARPAnet sockets which are not in your working set as defined
by the gensym mechanism is now reported on the CTY and on the user's
console. It is not an error to do so (yet). The UPG privilege
prevents this message (ie, programs which wish to use arbitrary
absolute sockets should enable UPG first). [yes, I know it's a
crock]
225. An IMP going down message no longer brings down the NCP in itself.
It does print a warning message on the console though. Later on
it will warn users too.
226. The NCP will now reliably go down when the IMP goes down.
227. TTYSET 36 and 37 get and set the TTY GLASS bit. If the bit is on,
rubout echos as bs-sp-bs instead of using the backslash notation.
Ignored on displays.
228. The NCP will now reliably go up when the IMP comes up.
229. OBSOLETE.
230. New KILL UUO for the spy to autologout inactive jobs. Killer job
must have the MESPRV or this UUO won't do anything.
MOVEI AC,<job number>
KILL AC,
231. New DETACH function for PTJOBX UUO (function 10) detaches
the job that is on a given tty.
PTJOBX ADDR
ADDR: <tty/pty to affect>
10 ;or SIXBIT /DETACH/
This function skips on success (including if there is no job on the
given tty). The direct return is taken if there is already a
forced monitor command pending for the given tty (in which case,
you can try again momentarily and it will probably work).
232. SUPACT, SUPSCM, SUPALL, SUPSOM bits in SETACT UUO's fourth word
all work for non-displays as well as for displays.
233. PTY writing UUOs can send 9-bit chars except to a PTY owned by
the job giving the UUO. The chars ↑C, ↑B, ↑U, etc., which are
normally intercepted specially by the monitor for control
functions, are interpreted as SU-AI graphic chars instead when PTY
written by a non-owner (e.g., when PTY written to self). The owner
job can use the Backnext commands (e.g., ↑←C) to cause bucky bits
to be added to characters and to send the graphic chars ↑C, ↑B, ↑U,
etc. "Owned" means the job got the PTY by PTYGET UUO.
234. IMP MTAPE 23 takes an argument of a host down code, as follows:
RH: Time expected back up:
007777 bits → when we are expected back up. 7776 means unknown,
7777 means over a week from now. Otherwise:
007000 bits → day of week (0 = Monday, etc.)
000760 bits → hour
000017 bits → minutes/5
Time is in GMT.
LH: Why we are unavailable:
000017 Host dead reason:
0 → IMP sets this (random network lossage)
1 → IMP sets this (we took down ready without saying why)
2 → IMP sets this (we are tardy)
3 → IMP sets this (we don't exist to the knowledge of the NCC!)
4 → NCP initialization
5 → Scheduled preventative maintenance
6 → Scheduled hardware work
7 → Scheduled software work
10 → Emergency restart
11 → Power outage
12 → Software breakpoint
13 → Hardware failure
14 → Not scheduled up
15 → unused
16 → unused
17 → Coming up now
The 777700,,770000 bits are ignored. This UUO is used to tell the IMP
why we are down for later when we go down.
235. The NUL: device now exists. It is a black hole; on input it
provides an immediate EOF and simply slurps up and discards all
output.
NUL: simulates most devices reasonably, however it has the
device characteristics of no device (except that it can do input,
output, and has a long dispatch table). Also, you shouldn't
expect the more esoteric UUOs for these devices to necessarily
"do the right thing" (like IMP MTAPEs!). ENTER, LOOKUP, RENAME,
will always skip return without any argument checking, and USETO,
USETI, UGETF, CLOSE, UTPCLR, and MTAPE are no-ops.
236. Don't expect the 777400,,770000 bits in IMP MTAPE 22 to be zero, although
this is usually the case.
237. The TTYUSE bit, bit 5 (10000,,0), is no longer returned by the DEVCHR
UUO (apparently it hasn't been since 1975).
238. IMP MTAPE 22 sends a reset to the host in the first word of the argument
block. It requires the job to enable UPG. Don't do this unless you know
what you're doing. The other dangerous IMP MTAPEs have been changed to
require the job to enable UPG (which any job can).
239. Reset Reply now purges our tables the way reset does. A heinous bug
in reset fixed.
240. The IMP service now has full 96.-bit leaders and can address the full
range of hosts (all 2↑24 of them) on the network. Look at IMPSER.DOC[S,SYS]
on page 9 for more details.
241. IMP MTAPE 7 has been changed to accept a listen-style block and return
one with the foreign host/socket filled in. The only use for it is to
know where to hack after a non-waiting listen.
242. IMP MTAPE 5 has been changed to return a set of addresses. It is only
really useful to IMPSTA. Look at IMPSER.DOC[S,SYS] if you're really
interested in what these values are.
243. TTYSET 40 is SET SPEED for an auto-baud-detect line on the DCA
scanner. The allowed arguments are
0 110 baud
2 150 baud
3 300 baud
in the right half of the command word.
244. The following references to the value 20 in the UUO Manual should
substitute "DPYL0" for "20". The value DPYL0 is equal to SCNNUM
(the number of non-display TTYs), whose value is given in the
high-order 9 bits of the word at Low Core location 221.
(a) The TTREAD UUO's main description.
(b) The TTREAD UUO's description of bits 12:17.
(c) The description of Low Core location 237 (LETAB+20, should
be LETAB+DPYL0). Flush explicit name of first III's TTY.
(d) The description of Low Core location 303 (ASTAB).
245. The following references to the value 26 in the UUO Manual should
substitute "DDL0" for "26". The value DDL0 is equal to SCNNUM+DPYNUM.
The values of SCNNUM and DPYNUM are contained in the first two 9-bit
bytes of the word at Low Core location 221.
(a) The description of bits 11:17 in a Video Switch Request for
the VDSMAP UUO.
(b) The description of Low Core location 335 (VDTIE).
Also, the last example under the VDSMAP UUO should be changed to use
a different line number when TTY26 is no longer a DD.
Also, Low Core location 237 should be described as containing
LETAB+DPYL0, where DPYL0 is equal to SCNNUM (the first 9-bit byte
of Low Core 221).
Also, the description of Low Core location 270 (PTYJOB) should say to
index into the PTYJOB table with the PTY's line number minus PTYL0,
where PTYL0 is one more than the sum of the first three 9-bit bytes
in Low Core 221.
246. [Modified by entry 268 on next page.]
In buffered mode, an IN or INPUT UUO with a nonzero address field
(actually an address field ≥4) changes the buffer address of the
next buffer to be filled by the system to the address given. (The
specified value is stored in DEVIAD in the DDB.) It is the user's
responsibility to ensure that the address points to the second word
of a buffer in a well-formed buffer ring, and to update the 3-word
buffer ring header. The UUO does not actually do any input. The
proper sequence to move a buffer ring is
1. Do the IN CH,ADDR as described above
2. BLT the buffers, and modify the address pointers
3. The next IN (or INPUT) will use the new buffers.
It is not necessary to do a WAIT UUO before the IN CH,ADDR since
that UUO does a WAIT before modifying the address. Note that the
argument is the address of the next buffer into which the system
should transfer data, not the next buffer from which the user will
read data.
247. LASTDISASTERTIME now contains the time of the last call into EDDT,
in ACCTIM format. Parity errors also set this guy.
248. The status bits as returned by several IMP MTAPEs now includes the
following host down information.
Code=0 → Host up or down status unknown.
RH: Time expected back up:
777700 bits → when host is expected back up. 7776 means unknown,
7777 means over a week from now. Otherwise:
700000 bits → day of week (0 = Monday, etc.)
076000 bits → hour
001700 bits → minutes/5
Time is in GMT.
LH: Why host is unavailable:
000017 Host dead reason:
0 → unknown
1 → Host took ready line down without saying why
2 → Host is tardy
3 → Host does not exist (to the knowledge of the NCC)
4 → NCP initialization at the remote host
5 → Scheduled preventative maintenance
6 → Scheduled hardware work
7 → Scheduled software work
10 → Emergency restart
11 → Power outage
12 → Software breakpoint
13 → Hardware failure
14 → Not scheduled up
15 → unused
16 → unused
17 → Coming up now
000360 Host inaccessable reason:
0 → Destination IMP unreachable
1 → Destination host dead
2 → Communication with destination host is impossible,
because they don't have the extended leader capability
and some turkey moved us out of the 0-377 address range.
3 → Communication with destination host is prohibited
≥4 → unused
249. TTYSET operation number 41 is "hang up modem", only works on DCA
port with modem control. No-op if not implemented.
250. CALLI 400057 is WHOAMI. No argument. Compares your jobname to a list
of jobnames the system knows about; if you're in the list it saves
your job number in a cell in the system for whatever purpose the
system has in mind. However, if there is already a job that has
claimed to be who you are claiming to be, then the other job continues
and your job is stopped with an error message. So far the only name
in the list is WHOPHN, for the phantom job which writes the display on
the available channel. RESET clears the cell if you are the magic
job.
251. Include DLNSER.DOC[S,SYS]
252. TTYSET setting operations can be performed on specific TTYs just like
getting operations -- the 400,,0 bit must be on and the TTY number
should be in the 177,,0 bits of the function word. However, you can
do setting operations only on TTYs that are yours (i.e., (1) the TTY
your job is running on, (2) an INITed or ASSIGNed TTY, or (3) a PTY
that you own). Setting operations on other TTYs are no-ops, with no
indication of failure.
253. In the UPGIOT UUO for a DM, the DMATXY bit (200,,0) in the left half of
the first header word means that when this user display program finishes,
any entries in the wholine queue for this DM should be flushed (to
establish cursor stability briefly). Also, the DMXLE bit (100,,0)
will suppress all but UPGIOT output to the DM until this transfer
has finished. This is needed if this transfer is a text shifting
operation and you want to position the line editor somewhere in the
middle of the screen *after* the shifting is finished but you want
to use overlapped mode instead of waiting for the shift to finish.
Note also that the DMXLE bit on in a user program header block flag word
means that user program output is given highest priority until the given
user display program has finished. Thus the line editor and page printer
cannot even start before the user program, much less interrupt it.
254. Setting a TTY's WIDTH value to ddd, where =128 ≤ ddd ≤ =255,
completely suppresses the monitor's normal insertion of CRLFs for
long lines on the TTY. The TTY width can be set with TTYSET UUO
function 5 and with the TTY WIDTH command.
255. DEVOAD and DEVIAD no longer contain PROG in index field (LH);
haven't for a long time.
256. The CORE UUO does not guarantee that new core is zeroed before being
given to the user job; in fact, it is likely to contain randomness.
A properly written user program isn't be affected by this.
257. TTYSETs 42 and 43 get and set, respectively, the job number whose
wholine is displayed on the given terminal. Function 42 returns -1
if the terminal is not a display.
258. When displaying in graphics mode on DDs, one has to display every
fourth line in order to win. When displaying consecutive lines,
besides being atrociously slow, the DD also refuses to display more
than 6 graphic lines per UUO. The trick is to output every 4th line
and then go back to fill in every line = 1 mod 4, etc.
259. New TTYSETs:
44 Get current padding character for DM. Returns -1 if not DM.
45 Set padding character for DM. No-op if not DM.
46 Get baud rate used in DM padding calculation. -1 if not DM.
47 Set baud rate used in DM padding calculation. No-op if not DM.
260. New AAO privilege (4.4 bit) says you have ownership rights to your
disk PPN when set in passive privileges (JB2PRV). When set in active
privileges, does something completely different (for a good time, read
the code). AAO goes away on an ALIAS monitor command or a DSKPPN UUO
which sets your disk PPN.
261. New SETPPV UUO, CALLI 400124, sets passive privileges (JB2PRV) from
its argument, requires AAO active.
262. TTYSET 14 -- diddle special DM bits -- has two new operation bits
(which appear in the right half of the function word):
Bit 29 0,,100 Flag this DM as a model 3025.
Bit 28 0,,200 Flag this DM as not a model 3025.
Currently, the significance of being flagged as a model 3025 is that
different padding is used, DM128 is assumed (can display control
characters), and when the cursor is supposed to be "off screen", it
is positioned at home instead (since the 3025 cannot make the cursor
disappear.
The DM3025 bit appears in the right half of the DM flag word,
which is returned by TTYSET 21. DM3025 is 0,,200 (bit 28) in DMFLAG.
263. The DDCHAN UUO, if bit 2 (100000,,0 bit) is set in the AC and if you
have the DEV privilege ACTIVE, takes bits 10-17 (377,,0) of AC as the
use code instead of using your job number. DEVPRV must be SETPRVed.
264. As of 8.73/A, the LOGIN UUO allows a phantom (ie, a job with JLOG off)
to set its PPN. It will not allow the phantom to set its privileges;
nor will it set JLOG (ie, the phantom remains a phantom). This allows
FTP programs to win without running with the REA and WRT privileges.
Previous systems make LOGIN illegal unless JLOG is clear and JACCT is
set.
265. The UUO Manual's sample calling sequence for the TMPCRD UUO uses
the TMPCOR UUO by mistake. Should say "TMPCRD AC,".
266. 8.73/A allows the "read info" MTAPE function for DSK, however, the
password is not returned unless the INF privileged is enabled. Previous
systems make this an illegal UUO unless INF is enabled.
267. Only a DISMIS UUO may be used to dismiss a KA-10 spacewar program.
All other UUO's are illegal on the KA-10.
268. A buffered mode IN or INPUT with nonzero eff. addr. (actually must be >3)
now checks the argument to make sure the buffer pointed to is empty, i.e.,
the word at the specified address must have its sign bit off. If not, the
UUO searches through the buffer ring and uses the first empty buffer it
finds. If all buffers are full, it uses the one pointed to by the UUO.
If it tries 100 (octal) buffers without finding either an empty one or
the end of the ring, it goes to UUOERR. This means the new buffers must
be set up before doing the UUO; the new sequence of events is
1. Do a WAIT
2. Move the buffers around in core
3. Do the IN UUO
269.
∂14-Nov-78 0521 TVR ADSMAP
CAVEAT: If you have more than one job connected to your Datadisk console and
you do a temperary audio switch selection via ADSMAP, a RESET on any
of your jobs will cancel the selection even if that job was not the
one which made the selection.
Perhaps this should be noted in the next UUO manual?
270. [THIS ENTRY IS NOW OBSOLETE! SEE 272 BELOW.]
New procedure for moving output buffers (cf. 268 above):
1. If you have a partially filled output buffer, output it by
OUT or OUTPUT UUO.
2. Give an OUT or OUTPUT whose effective addr points to any
of what will be the new output buffers. This UUO will
force out any waiting buffers, put the new buffer address
into the buffer ring header, and set the sign bit of the
first word of the header to indicate that the new ring
is not initialized.
3. Now set up the ring pointers in the new buffers.
4. Now do an OUT or OUTPUT (eff addr 0) which will simply
check the new buffer ring and make it ready for use, not
actually causing any output.
This procedure will work even if the old and new buffer areas
overlap. If, however, you have a partially filled buffer you
don't want to output until after you move the buffers, you have
to do steps 2, 3, and 4, then move the data from the old buffer
into the new buffer, being sure to keep the byte pointer in the
buffer header correct.
271. RUNMSK, GDPTIM, and LTHUUO are now completely flushed.
272. 270 is obsolete. New procedure for moving output buffers:
First move the buffers, then do the OUT UUO with nonzero E.
This will find the first empty buffer after a full buffer
and set DEVOAD to it. You set up the buffer header yourself,
as for input.
273. LIV privilege now means only that the job is never auto-logged-out
(it may be detached). It is a passive priv but explicitly disabled
whenever any program is run by monitor command. New passive priv
DET means that auto-detach is preferred to auto-logout; can be
set by anyone by command or UUO. (DETPRV = 0,,100000)
274. Location 341 points to the DDBCNT job table. This table has one
word per job number, which is AOSed on an INIT or OPEN for any
device other than TTY or DSK (or new-style UDP), and on an ENTER
on DSK (or...). It is SOSed on RELEASE of non-DSK, non-TTY, and
either on CLOSE or RELEASE of a disk channel open for writing.
It is zeroed on RESET. The table is meant to help smart autologout;
the spy will prefer to log out jobs for which this entry is zero.
275. The owner of a PTY gets (if enabled) the INTTTC interrupt if the
PTY becomes a DM or a non-DM, or goes into or out of image mode.
276. Section 13.4 on DM display output should mention that the character
33 sent to a DM128-type Datamedia causes the next character to be
displayed no matter what it is (even if it is a control character).
For DM3025-type DMs, however, the next char is displayed only if it
is a control character (0:37) or 177 (the remaining characters may
cause control functions when following a 33 on a DM3025).
277. The P2UUO UUO (CALLI 400125) is used to test and modify the state of
P2 in a FTP2SP system. The AC field of the UUO (not the contents of
the AC, but the field itself) determines the precise UUO function:
0 - TEST P2 MEMORY UP
1 - TEST P2 RUNNING
2 - SET P2 MEMORY UP
3 - SET P2 MEMORY DOWN
4 - GET P2 MEMORY AS HISEG WRITEABLE
5 - GET P2 MEMORY AS HISEG WRITE PROTECTED
Function 0 takes the skip return if P2's memory is working and
connected to the system. It takes the direct return if the memory
was nonexistent when the system was reloaded or has been declared
down at reload or while the system was running.
Function 1 takes the skip return if P2 is actually running its
system. (The P2 system might be hung, or even halted, but it
has set the flag saying it's up and has not been declared down
by either processor.)
Function 2, which requires the DEV privilege, declares that P2's
memory is now online if it had been down. Note that if the memory
is really still not connected, this will crash the system! This
function always takes the direct return. (It stops the job if
not privileged.)
Function 3, which also requires DEV, declares P2's memory down. It
stops the P2 system if it had been running. It takes the skip
return if successful--it requires three pages of other memory to
be available to hold the system data normally shared between the
two processors.
Note that functions 2 and 3 require the DEV privilege in the job's
ACTIVE privileges.
Functions 4 and 5 get all of P2 memory as your job's upper segment,
writeable or write protected respectively. They both take the skip
return if successful. They will fail if P2 memory is down; function
4 will also fail if you do not have the ACW privilege enabled.
278. The PHPEEK UUO (CALLI 400126) takes a fullword physical address in
the AC argument and returns in the same AC the contents of that
word of physical memory, or zero if there is no such word. Note
that, although the highest possible address is only 22 bits long,
bits 0:13 of the argument must be zero or the UUO will just return
a zero result. If P2 memory is up, it is in words 14 000 000 through
14 377 777 of P1 physical address space. P3 memory is not on P1's
memory bus, and cannot be read with this UUO. The PEEK UUO has been
modified so that it interprets its argument as an 18-bit exec
virtual address, ignoring the left half of the argument word.
279. The PTRDS UUO checks only the 7700,,0 bits of the possible byte
pointer to determine whether to keep the specified byte size and
position or to use 7-bit bytes starting in the high-order byte
of the addressed word. Thus, the user can specify any byte-size
such as 9-bit bytes in order to detect image mode output characters
that have the 400 bit on.
280. XGP error code 5 now means data missed in either buffered mode or
dump mode. This error comes along with the I/O status error bit
IODERR (0,,200000).
281. INTFOP bit (40000,,0) in interrupt enablings gets interrupts when
user on PTY flushes output (i.e., types ↑O if not on DM, or types
EDIT-CLEAR if on DM). The job controlling the PTY gets the
interrupt (not job running on PTY). The telnet servers will detect
this interrupt and tell the network to flush any outgoing text that
is in transit.
282. DM display program output (UPGIOT) that does inserts and deletes
to move text around on the screen should be done with the USERGO
bit set to prevent interruption while other pieces of the screen
(e.g., the page printer and line editor) are temporarily in the
wrong place.
283. TTYJOB UUO should say zero is returned if there is no such job.
289. (obsolete)
290. PTJOBX function 11 is PDETACH, which is just like DETACH (10)
except that if successful in the detach, it also makes the
detached job a phantom (i.e., turns of JLOG).
291. TTYSET function 50 gets the NO-DELETE bit and TTYSET function 51
sets this bit from the low-order bit of the function word. The
NO-DELETE bit is also set by the command TTY NO DELETE and cleared
by TTY DELETE.
292. Meaning of FULTWX:
FULTWX on means that the line is "self-echoing full duplex", i.e.,
system echoing is not necessary. TTY ECHO clears FULTWX, and
TTY NO ECHO sets it. (The manual has these two commands interchanged.)
293. LASTDISASTERTIME (low core pointer at 256) contains DATE,,TIME IN SECS
(not uptime as previously claimed).
294. In the SWAP UUO, if the core size specified in the GETADR section is
zero, the new program is given the amount of core that it was saved
in.
295. The DPYPOS and LEYPOS UUOs now use (essentially) all 18 bits of
position for DMs, in order to allow positioning even beyond line 36
on a (possibly simulated) DM. The interpretation of the position is
the same as before (1000 octal is the top of the screen and -1000 is
the 24th line; lines beyond the 24th are addressed by decrements of
2000/24 per line). Also, the maximum permissible DM screen height
allowed by the system is now 62 (decimal) lines. (For IIIs and DDs,
there is no effective change, since the whole III and DD screen
could already be addressed.) In actuality, the 400000 bit in the
LEYPOS address field is ignored except that this bit can be set
non-zero to ensure a non-zero value in the address field (a zero
value undoes any previous LEYPOS in effect).
296. Lowcore 257 contains the address of TIMDAT (date,,time in secs).
297. IMP MTAPE 24 will attempt to unwedge a connection in allocation wait.
This function requires UPG and is intended for network wizards only,
as it randomly mauls a connection's allocation (essentially, it fakes
receiving a 4 message, 100 bit allocation from the remote host). It
takes a connection index (which changes in real time!) for a single
argument and skip returns if it succeeds.
298. The manual's example section (Section 14) should be referenced by the
sections being exampled.
299. TTYSET function 52 sets the DM width of your terminal to that given
in the right half of the function word. This function will be a no-op
if either your terminal is not already known by the system to be a DM
or if the given width is not between 16 and 96 inclusive (current
limits). For now, the width MUST be a multiple of 8; if it is not,
then it is truncated to the next lower multiple of 8.
300. The referenced-date word in UFDs, long-block LOOKUPs, and disk
retrieval will soon include more info (including a count of days
referenced) of yet-undefined format. Programs that use the date
should AND the word with 0,,77777 before printing to get only the
date referenced. -- ME
301. The ICTRAN bit in the IMP I/O status word means that an incomplete
transmission occured, as of system 9.06/C. ICTRAN is the 4000 bit.
302. The IOIMPM bit in the IMP I/O status word means that an IN or OUT
UUO was attempted when there was no connection open on that channel.
303. The BLOK bit (100 in IMP I/O status word) indicates that the connection
is in a RFNM wait.
304. The IO%RDY bit (2000 in DLN I/O status word) indicates the Dialnet port
received a good packet from the other side.
305. The cell UPTIME (pointed to by some lowcore location) counts only ticks
the system sees, not those it misses, for example while in DDT. It does
not count real time, only system-active time.
306. MTAPE 16 for the disk is permanent really only if file open for writing.
307. As of system 9.06/G, the IOIMPM bit will be set in the DLN I/O status
work if Dialnet I/O is attempted without an open connection. Previously
it stopped the job with an error.
308. For disk files, the left half of the word containing the date
referenced now contains a count of the number of days on which the
file has been referenced (since the date last written). The count
is zero for any file that has been referenced only on the date
written, and the count is incremented once for each day thereafter
on which the file is referenced.
309. Bit 5 (10000,,0) of the dump date word (sixth word returned on
long lookup)is the REAP bit, indicating that DART should P-dump
twice and then delete the file.
310. Device VRN is the Varian Plotter, driven from P2. It can be
opened only in modes 17 and 117. The format of data for device
VRN is exactly like that for device XGP in mode 17 (and 117),
but the "cut the paper" bit is currently ignored for the VRN
(in the future it might mean "draw a line of some length on the
paper so the paper can be cut here later"). The VRN and XGP
are interlocked such that they cannot both be INITed
concurrently. An attempt to INIT one while the other is busy
will fail or wait (depending on the INIT bits and/or your
answer to a question about waiting). It IS possible for both
of these devices to be concurrently ASSIGNed.
311. An IOWD for the VRN or XGP in mode 117 that becomes illegal
because the user changed the IOWD or the user core size while
the XGP was running in overlapped mode will cause the IOIMPM
error bit to come on in the I/O status word with major error
code 16. The MTAPE that reads the error code will return the
out-of-bounds user address in ADR+2.
312. Any error reported by the VRN while data is being transmitted
to it will generate error code 6, with the error reading MTAPE
returning in ADR+2 the CONI bits of the VRN at the time of the
error. The possible right-half error bits are listed below (some
other, non-error, bits will probably also be on).
VNOTOK←←40000 ;Device not ready (e.g., off-line or power off)
VOFFLN←←400 ;Off-line
VSUPLO←←200 ;Supplies low
313. The MTAPE UUO for the VRN takes exactly the same format as the
MTAPE for the XGP. However, only MTAPEs 0, 4 and 5 are legal for
the VRN (since text mode is not implemented for the VRN); each of
these three MTAPEs does the same for the VRN as it does for the
XGP. (MTAPE 4 returns ADR+3 as zero iff any of the above 3 error
bits were on in the last VRN CONI).
314. The DWCNT field for the GCW of XGP and VRN dump mode output is
now one bit bigger than before (now 7 bits wide, consisting of
the 0,,177 bits of the GCW).
315. The FILUSR UUO [CALLI 400046] can be used to find out what job(s)
have a particular file open. The call is
MOVEI AC,ARGS
FILUSR AC,
<ERROR RETURN - NOT A DISK DEVICE>
<NORMAL RETURN>
ARGS: SIXBIT /DEV/ ;MUST BE DISK OR NEW-STYLE UDP, 0 MEANS DSK
SIXBIT /NAME/
SIXBIT /EXT/
BLK
SIXBIT /PPN/
BLK: BLOCK =16
On return from the UUO, BLK contains a list of 9-bit bytes,
terminated with a zero byte. Each byte contains a job number
in the rightmost six bits, and a flag in the 400 bit which
will be on if that job has the file open for output (including
read/alter mode). (The job may also have the file open for
input on another channel. Each job number will only appear
once no matter how many channels have the same file open.)
The 200 and 100 bits in each 9-bit job-number byte are reserved
for future use.
316. Clarification: The UPGIOT UUO for a DM or a III copies the text out
of your core image into system free storage and outputs it from
there. So you can use overlapped mode and then clobber the core
where the program was as soon as the UUO returns (for DMs and IIIs,
but not for DDs which do the display output directly from your core
image).
317. The following interrupt bit was added some time ago.
Bit Octal Name Interrupt Condition
21 0,,40000 INTSIX The PDP-6 has interrupted with a message (or
something).
318. Typeout by the TTYMES and NULMES UUOs to any terminal other than
'TTY' will not be suppressed by typing ESC O (↑O on non-displays).
Thus you can suppress your own program's output without suppressing
messages sent to you by other people.
319. The following UUOs are added for DM NOEDIT mode (see NOEDIT/D
for full information):
UUO to set up a macro definition for a character:
call: MOVEI AC,ADDR
CHRMAC AC, [CALLI 400065]
<error return -- code in AC>
<success return>
ADDR: CHAR,,LENGTH
BYTE (12)XX,XX,XX
ETC
CHAR is the character which is to be redefined. It must be a 7-bit
character, and must be one of the redefinable ones.
LENGTH is the number of 12.-bit bytes in the macro definition.
If LENGTH is zero then any previous macro will be flushed and
the character will have its default meaning.
The bytes are standard 9-bit SAIL characters, with the following
special codes allowed:
0600 CALL
2000 quote following char (↑Q)
2001 quote with CONTROL (↑P)
2002 quote with META (↑V)
2003 quote with CONTROL-META (↑W)
4041 BREAK
4042 ESCAPE
4044 CLEAR
4241 HOLD
4244 UNHOLD
4444 FLUSH DM QUEUES
If the UUO takes the direct return, the AC will contain one of these codes:
0 UUO not defined (FTNOED off) or system error
1 Job's TTY not a NOEDIT display
2 CHAR not a redefinable character
3 Trying to redefine the only ESCAPE character
4 LENGTH is greater than maximum allowed
5 Some byte isn't an allowable SAIL character
UUO to read a character macro:
call: MOVEI AC,ADDR
GETMAC AC, [CALLI 400120]
<error return -- not a NOEDIT DM>
<success return -- ADDR is set up as CHRMAC arg block>
ADDR: CHR,,<length returned here>
BLOCK 6 <12.-bit bytes returned here>
Also, the following TTYSET functions are added:
53 ;GET NOEDIT ESCAPE CHARS
54 ;SET NOEDIT ESCAPE CHAR (SIC)
55 ;GET NOEDIT FLAG
56 ;SET NOEDIT FLAG
57 ;GET HTOGGL FLAG
60 ;SET HTOGGL FLAG
61 ;GET NOEDIT MODE
62 ;SET NOEDIT MODE
55-60 have arguments and values of a single bit. 53 returns a word
with one bit per possible ESCAPE character; the bit is 1 if that
character is in fact an ESCAPE. The bits are:
char octal bit octal
↑@ 000 35 1
↑H 010 34 2
↑I 011 33 4
↑J 012 32 10
↑K 013 31 20
↑L 014 30 40
↑[ 033 29 100
↑\ 034 28 200
↑] 035 27 400
↑↑ 036 26 1000
↑← 037 25 2000
54 takes a character code (ASCII) as its argument.
61 and 62 get and set a 4-bit field. The TTY must be in a NOEDIT mode
for these to be meaningful. The four bits are
bit octal meaning
32 10 ALL-QUOTE mode (including BUCKY-ALLQUOTE)
33 4 any QUOTE mode (anything but NORMAL)
34 2 META- or CONTROL-META-QUOTE or -ALL-QUOTE
35 1 CONTROL- or CONTROL-META-QUOTE or -ALL-QUOTE
All four bits are zero for NORMAL mode.
320. The sign bit of the XGP right margin word (in MTAPEs 2 and 3,
read and set margins) means "suppress wraparound when text passes
the right margin." With this bit on (the default is off, i.e.,
text wraps around), any character starting beyond the right
margin is ignored. A carriage return, or other explicit column-
setting command, will cause printing to resume.
321. The line editor command META-<bs> no longer clear line editor
insert mode. This allows NO-EDIT-KEY display users to type
RUBOUT (which turns into META-<bs>) while in insert mode, just
like DD users type BS, without clearing the insert mode. This is
the only META command which doesn't clear insert mode.
322. For the XGP, there is a new No-Wraparound mode for text output after
the right margin has been reached. In this new mode, all text beyond
the right margin is ignored, until an explicit absolute column is
selected, for instance with a CR. In Wraparound mode (the default and
formerly the only mode available), a CRLF is inserted and the text
continues on the next line whenever the right margin is exceeded.
No-Wraparound mode is enabled by setting the sign bit of the
right-margin word of the XGP margin setting MTAPE (function 3, sign
bit of word 5). The XGP margin reading MTAPE (function 2) returns the
sign bit of the right-margin word (word 5) as the No-Wraparound mode
flag.
323. The MTAPE 5 for XGP and VRN, called "pseudo-close", is useful
particularly in overlapped video mode (mode 117). In that mode, when
you have no more data to output, you should do an MTAPE [5] instead of
a CLOSE (or at least before any CLOSE) to tell the system that no more
data is to occur. If you do a normal CLOSE UUO instead, then you will
very likely get the I/O status bit IOTEND, meaning "data ran out
before close done" (which can happen otherwise if you don't always
have the data ready for the device when it needs it). A normal CLOSE
UUO waits for output to finish before it does ANYTHING, but that means
that the XGP or VRN service routine will run out of data before
finding out that you have done a CLOSE, so it will turn on the IOTEND
bit. And that will make it impossible to tell whether you got the
IOTEND error actually in the middle of the data, which is where it can
affect the output. When IOTEND comes on, the XGP will cut the paper
and the VRN will slew out the paper.
324. In the "extended display service", the terminal dependent flags
formerly kept in the right half of the DMFLAG word of the dpy hdr
(returned by TTYSET 21) are now kept elsewhere. Once the extended
display service has settled down, there will probably be a new TTYSET
added to return the new bits. The TTYSET program has been modified
not to look in the old place for these bits, but it doesn't know yet
about the new place; so it just doesn't type out these settings.